<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        class Logger {
            constructor(time) {
                this.time = time
            }
            // 静态属性的写法2
            static city = 'zz'

            // 箭头函数的this就是上一级的this
            printName = (name)=>{
                console.log(this);
                console.log('hello,', name);
            }

            print(name) {
                console.log(this);
                console.log('hello,', name);
            }
            // static 变成静态的 不会向后传递
            static yuXi() { // 传国玉玺，不再向后代传递，带进棺材里
                console.log(22, this); // 这个this指向class本身而不是class的实例
                console.log('这是我的玉玺，不给你。人在玺在，人亡玺亡');
            }
        }

        Logger.hobby = ['coding']; // 静态属性的写法1

        let logger1 = new Logger('2022'); // logger1是Logger的实例，会继承父类的属性和方法
        logger1.printName('Jay')
        logger1.print('JJ')
        // logger1.yuXi(); // 报错，没有这个函数
        Logger.yuXi() // 正确的方法
        // 代码中的继承：被后代继承后，父类仍然有这个属性和方法；和生活中的继承不同
        // let logger2 = new Logger();
        // logger2.yuXi();
        // let logger3 = new Logger();
        // logger3.yuXi();
        // let logger4 = new Logger();
        // logger4.yuXi();

        // =============== 以下是属性 ==============
        console.log(logger1.time);
        console.log(logger1.city);// city是静态属性，不会被子类继承，所以是undefined
        console.log(Logger.city);
        console.log(Logger.hobby); 
        console.log(logger1.hobby);// hobby是静态属性，不会被子类继承，所以是undefined
    </script>
</body>
</html>